------------------------------------------------------------------------------------------------------------------------------------ name: log: C:\Projects\Analysis\Calendar tutorial\Stata\Example5.log log type: text opened on: 31 Aug 2017, 00:30:09 . * DHS Calendar Tutorial - Example 5 . * Percent distribution of discontinuations of contraceptive methods in the five years . * preceding the survey by main reason stated for discontinuation, according to specific method . . * download the model dataset for individual women's recode: "ZZIR62FL.DTA" . * the model datasets are available at http://dhsprogram.com/data/download-model-datasets.cfm . . * change to a working directory where the data are stored . * or add the full path to the 'use' command below . cd "C:\Data\DHS_model" C:\Data\DHS_model . . * open the dataset to use, selecting just the variables we are going to use . use caseid vcal_1 vcal_2 v000 v005 v007 v018 v021 v023 using "ZZIR62FL.DTA", clear . . . * Step 5.1 . * loop through calendar creating separate variables for each month . * total length of calendar to loop over including leading blanks (80) . local vcal_len = strlen(vcal_1[1]) . forvalues i = 1/`vcal_len' { 2. gen str1 method`i' = substr(vcal_1,`i',1) 3. gen str1 reason`i' = substr(vcal_2,`i',1) 4. } (7,564 missing values generated) (7,564 missing values generated) (7,564 missing values generated) (7,564 missing values generated) (7,564 missing values generated) (7,564 missing values generated) (7,564 missing values generated) (7,564 missing values generated) (7,564 missing values generated) (7,564 missing values generated) (7,564 missing values generated) (7,564 missing values generated) (7,564 missing values generated) (7,566 missing values generated) (7,574 missing values generated) (7,590 missing values generated) (7,610 missing values generated) (7,622 missing values generated) (7,637 missing values generated) (7,651 missing values generated) (7,673 missing values generated) (7,708 missing values generated) (7,729 missing values generated) (7,746 missing values generated) (7,767 missing values generated) (7,784 missing values generated) (7,798 missing values generated) (7,816 missing values generated) (7,839 missing values generated) (7,852 missing values generated) (7,867 missing values generated) (7,878 missing values generated) (7,894 missing values generated) (7,925 missing values generated) (7,941 missing values generated) (7,958 missing values generated) (7,974 missing values generated) (7,985 missing values generated) (8,005 missing values generated) (8,019 missing values generated) (8,032 missing values generated) (8,044 missing values generated) (8,048 missing values generated) (8,053 missing values generated) (8,063 missing values generated) (8,094 missing values generated) (8,101 missing values generated) (8,113 missing values generated) (8,126 missing values generated) (8,135 missing values generated) (8,154 missing values generated) (8,164 missing values generated) (8,172 missing values generated) (8,176 missing values generated) (8,188 missing values generated) (8,195 missing values generated) (8,201 missing values generated) (8,221 missing values generated) (8,228 missing values generated) (8,238 missing values generated) (8,251 missing values generated) (8,258 missing values generated) (8,268 missing values generated) (8,273 missing values generated) (8,278 missing values generated) (8,286 missing values generated) (8,295 missing values generated) (8,298 missing values generated) (8,305 missing values generated) (8,316 missing values generated) (8,318 missing values generated) (8,323 missing values generated) (8,326 missing values generated) (8,328 missing values generated) (8,332 missing values generated) (8,338 missing values generated) (8,344 missing values generated) (8,345 missing values generated) (8,347 missing values generated) (8,347 missing values generated) . . . * Step 5.2 . * drop calendar string variables as we don't need them further . drop vcal_1 vcal_2 . . * reshape the data file into a file where the month is the unit of analysis . reshape long method reason, i(caseid) j(i) (note: j = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 4 > 4 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80) Data wide -> long ----------------------------------------------------------------------------- Number of obs. 8348 -> 667840 Number of variables 167 -> 10 j variable (80 values) -> i xij variables: method1 method2 ... method80 -> method reason1 reason2 ... reason80 -> reason ----------------------------------------------------------------------------- . . . * Step 5.3 . * keep only the cases of discontinuations (reason is not blank) . * in the five years preceding the survey . * checks for both a single blank and the null string in reason . * string can be null if position i is beyond the last non-blank in the original string . keep if reason != " " & reason != "" & inrange(i,v018,v018+59) (666,894 observations deleted) . . . * Step 5.4 . * list of codes of methods . local methodlist = "123456789WNALCFEMS" . * convert the contraceptive methods to numeric codes, using the position in the string . gen method_num = strpos("`methodlist'",method) . * convert the missing code to 99 . replace method_num = 99 if method == "?" (0 real changes made) . * now check if there are any codes that were not converted, and change these to -1 . replace method_num = -1 if method_num == 0 & method != " " (0 real changes made) . . * list of codes of reasons for discontinuation. ~ represents other survey specific codes . local reasonlist = "123456789CFAD~~~~" . * convert the reasons for discontinuation to numeric codes, using the position in the string . gen reason_num = strpos("`reasonlist'",reason) . * now convert the special codes for other, don't know and missing to 96, 98, 99 respectively . gen special = strpos("W~K?",reason) . replace reason_num = special+95 if special > 0 (43 real changes made) . drop special . * now check if there are any codes that were not converted, and change these to -1 . replace reason_num = -1 if reason_num == 0 & reason != " " (0 real changes made) . . . * Step 5.5 . * label the method variables and codes . label variable method "Contraceptive method (alpha)" . label variable method_num "Contraceptive method" . label def method_codes /// > 0 "No method used" /// > 1 "Pill" /// > 2 "IUD" /// > 3 "Injectable" /// > 4 "Diaphragm" /// > 5 "Condom" /// > 6 "Female sterilization" /// > 7 "Male sterilization" /// > 8 "Periodic abstinence/Rhythm" /// > 9 "Withdrawal" /// > 10 "Other traditional methods" /// > 11 "Norplant" /// > 12 "Abstinence" /// > 13 "Lactational amenorrhea method" /// > 14 "Female condom" /// > 15 "Foam and Jelly" /// > 16 "Emergency contraception" /// > 17 "Other modern method" /// > 18 "Standard days method" /// > 99 "Missing" /// > -1 "***Unknown code not recoded***" . label val method_num method_codes . . * label the reason variables and codes . label variable reason "Discontinuation code (alpha)" . label variable reason_num "Discontinuation code" . label def reason_codes /// > 0 "No discontinuation" /// > 1 "Became pregnant while using" /// > 2 "Wanted to become pregnant" /// > 3 "Husband disapproved" /// > 4 "Side effects" /// > 5 "Health concerns" /// > 6 "Access/availability" /// > 7 "Wanted more effective method" /// > 8 "Inconvenient to use" /// > 9 "Infrequent sex/husband away" /// > 10 "Cost" /// > 11 "Fatalistic" /// > 12 "Difficult to get pregnant/menopause" /// > 13 "Marital dissolution" /// > 96 "Other" /// > 98 "Don't know" /// > 99 "Missing" /// > -1 "***Unknown code not recoded***" . label val reason_num reason_codes . . . * Step 5.6 . * Compute weight variable . gen wt=v005/1000000 . . * crosstab reason and method, either using a simple tab: . tab reason_num method_num [iweight=wt], col +-------------------+ | Key | |-------------------| | frequency | | column percentage | +-------------------+ | Contraceptive method Discontinuation code | Pill IUD Injectabl Condom Periodic Withdrawa Other tra Norplant | Total ----------------------+----------------------------------------------------------------------------------------+---------- Became pregnant while | 36.963059 0 23.518104 5.482217 0 .80930901 11.989206 0 | 82.95496 | 9.14 0.00 4.88 4.46 0.00 11.53 40.34 0.00 | 6.56 ----------------------+----------------------------------------------------------------------------------------+---------- Wanted to become preg | 119.70253 5.4144591 131.53668 34.493693 3.022521 1.9204611 8.867199 22.7654323 | 339.56439 | 29.61 19.48 27.29 28.08 13.95 27.37 29.83 25.05 | 26.84 ----------------------+----------------------------------------------------------------------------------------+---------- Husband disapproved | 14.03721 .88217503 6.508606 9.5084161 0 0 2.05095 4.665788 | 65.61936 | 3.47 3.17 1.35 7.74 0.00 0.00 6.90 5.13 | 5.19 ----------------------+----------------------------------------------------------------------------------------+---------- Side effects | 97.680173 20.23361 233.75634 6.1060832 6.6836791 1.25802 1.452412 54.539657 | 424.18264 | 24.16 72.81 48.50 4.97 30.85 17.93 4.89 60.00 | 33.53 ----------------------+----------------------------------------------------------------------------------------+---------- Access/availability | 21.212403 0 5.54250896 2.688849 0 0 .55186999 0 | 29.995631 | 5.25 0.00 1.15 2.19 0.00 0.00 1.86 0.00 | 2.37 ----------------------+----------------------------------------------------------------------------------------+---------- Wanted more effective |80.5512978 0 35.99295 26.714048 4.4645391 2.2203889 .69064802 .418383 | 160.10621 | 19.93 0.00 7.47 21.75 20.61 31.64 2.32 0.46 | 12.65 ----------------------+----------------------------------------------------------------------------------------+---------- Inconvenient to use | 8.344504 1.25802 6.075892 18.158897 .80930901 0 .74744798 3.9752231 | 39.626623 | 2.06 4.53 1.26 14.78 3.74 0.00 2.51 4.37 | 3.13 ----------------------+----------------------------------------------------------------------------------------+---------- Infrequent sex/husban | 5.2058952 0 14.48474 1.208572 6.6836791 0 .86752599 0 | 34.790794 | 1.29 0.00 3.01 0.98 30.85 0.00 2.92 0.00 | 2.75 ----------------------+----------------------------------------------------------------------------------------+---------- Cost | .286632 0 5.827325 4.8573129 0 0 0 2.7108791 | 13.682149 | 0.07 0.00 1.21 3.95 0.00 0.00 0.00 2.98 | 1.08 ----------------------+----------------------------------------------------------------------------------------+---------- Fatalistic | 0 0 .73194402 0 0 0 0 0 | 11.10523 | 0.00 0.00 0.15 0.00 0.00 0.00 0.00 0.00 | 0.88 ----------------------+----------------------------------------------------------------------------------------+---------- Difficult to get preg | .53772801 0 1.14783597 0 0 0 0 .563108027 | 2.248672 | 0.13 0.00 0.24 0.00 0.00 0.00 0.00 0.62 | 0.18 ----------------------+----------------------------------------------------------------------------------------+---------- Other | .56567502 0 5.295249 0 0 0 1.766301 0 | 7.6272251 | 0.14 0.00 1.10 0.00 0.00 0.00 5.94 0.00 | 0.60 ----------------------+----------------------------------------------------------------------------------------+---------- Missing | 19.161202 0 11.523261 13.622675 0 .80930901 .7378 1.25802 | 53.686628 | 4.74 0.00 2.39 11.09 0.00 11.53 2.48 1.38 | 4.24 ----------------------+----------------------------------------------------------------------------------------+---------- Total | 404.24831 27.788264 481.94143 122.84076 21.663727 7.017488 29.72136 90.8964901 | 1,265.191 | 100.00 100.00 100.00 100.00 100.00 100.00 100.00 100.00 | 100.00 | Contraceptive method Discontinuation code | Lactation Other mod | Total ----------------------+----------------------+---------- Became pregnant while | 4.193065 0 | 82.95496 | 6.12 0.00 | 6.56 ----------------------+----------------------+---------- Wanted to become preg | 9.621027 2.2203889 | 339.56439 | 14.05 20.93 | 26.84 ----------------------+----------------------+---------- Husband disapproved | 27.966215 0 | 65.61936 | 40.85 0.00 | 5.19 ----------------------+----------------------+---------- Side effects | 2.472669 0 | 424.18264 | 3.61 0.00 | 33.53 ----------------------+----------------------+---------- Access/availability | 0 0 | 29.995631 | 0.00 0.00 | 2.37 ----------------------+----------------------+---------- Wanted more effective | 1.731912 7.3220382 | 160.10621 | 2.53 69.02 | 12.65 ----------------------+----------------------+---------- Inconvenient to use | 0 .25733 | 39.626623 | 0.00 2.43 | 3.13 ----------------------+----------------------+---------- Infrequent sex/husban | 6.3403819 0 | 34.790794 | 9.26 0.00 | 2.75 ----------------------+----------------------+---------- Cost | 0 0 | 13.682149 | 0.00 0.00 | 1.08 ----------------------+----------------------+---------- Fatalistic | 10.373286 0 | 11.10523 | 15.15 0.00 | 0.88 ----------------------+----------------------+---------- Difficult to get preg | 0 0 | 2.248672 | 0.00 0.00 | 0.18 ----------------------+----------------------+---------- Other | 0 0 | 7.6272251 | 0.00 0.00 | 0.60 ----------------------+----------------------+---------- Missing |5.76505208 .80930901 | 53.686628 | 8.42 7.63 | 4.24 ----------------------+----------------------+---------- Total | 68.463608 10.609066 | 1,265.191 | 100.00 100.00 | 100.00 . . * or better, using svy tab: . svyset v021 [pweight=wt], strata(v023) pweight: wt VCE: linearized Single unit: missing Strata 1: v023 SU 1: v021 FPC 1: . svy: tab reason_num method_num, col per (running tabulate on estimation sample) Number of strata = 8 Number of obs = 946 Number of PSUs = 165 Population size = 1,265.1905 Design df = 157 ------------------------------------------------------------------------------------------------------------------------ Discontin | uation | Contraceptive method code | Pill IUD Injectab Condom Periodic Withdraw Other tr Norplant Lactatio Other mo Total ----------+------------------------------------------------------------------------------------------------------------- Became p | 9.144 0 4.88 4.463 0 11.53 40.34 0 6.125 0 6.557 Wanted t | 29.61 19.48 27.29 28.08 13.95 27.37 29.83 25.05 14.05 20.93 26.84 Husband | 3.472 3.175 1.35 7.74 0 0 6.901 5.133 40.85 0 5.187 Side eff | 24.16 72.81 48.5 4.971 30.85 17.93 4.887 60 3.612 0 33.53 Access/a | 5.247 0 1.15 2.189 0 0 1.857 0 0 0 2.371 Wanted m | 19.93 0 7.468 21.75 20.61 31.64 2.324 .4603 2.53 69.02 12.65 Inconven | 2.064 4.527 1.261 14.78 3.736 0 2.515 4.373 0 2.426 3.132 Infreque | 1.288 0 3.005 .9839 30.85 0 2.919 0 9.261 0 2.75 Cost | .0709 0 1.209 3.954 0 0 0 2.982 0 0 1.081 Fatalist | 0 0 .1519 0 0 0 0 0 15.15 0 .8778 Difficul | .133 0 .2382 0 0 0 0 .6195 0 0 .1777 Other | .1399 0 1.099 0 0 0 5.943 0 0 0 .6029 Missing | 4.74 0 2.391 11.09 0 11.53 2.482 1.384 8.421 7.628 4.243 | Total | 100 100 100 100 100 100 100 100 100 100 100 ------------------------------------------------------------------------------------------------------------------------ Key: column percentage Pearson: Uncorrected chi2(108) = 662.2600 Design-based F(10.15, 1593.43)= 4.7692 P = 0.0000 . end of do-file name: log: C:\Projects\Analysis\Calendar tutorial\Stata\Example5.log log type: text closed on: 31 Aug 2017, 00:30:21 ------------------------------------------------------------------------------------------------------------------------------------